package com.block.risk.service.type.item;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.block.risk.model.result.RiskJudgeResult;
import com.block.risk.service.IDefaultItemService;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

@Service
public class JiuRunItemService implements IDefaultItemService {

    @Override
    public RiskJudgeResult getControlResult(JSONObject resultDetial) {

        /**
         * ②、行为分500分＋。
         * ③、3个月有网贷履约、履约笔数大于失败扣款。
         * ④、非白户。
         * ⑤、1个月履约2次以上。
         * ⑥、6个月m0=0无逾期。
         * ⑦、正常还款订单比例90%以上。
         */

        RiskJudgeResult riskJudgeResult = new RiskJudgeResult();
        riskJudgeResult.setPass(false);

        JSONObject currentReportDetail = resultDetial.getJSONObject("current_report_detail");
        JSONObject behaviorReportDetail = resultDetial.getJSONObject("behavior_report_detail");
        JSONObject applyReportDetail = resultDetial.getJSONObject("apply_report_detail");

        if (ObjectUtil.isEmpty(behaviorReportDetail)){
            riskJudgeResult.setResult("行为数据结果为空；【behavior_report_detail】");
            return riskJudgeResult;
        }

        //B22170001
        // 贷款行为分 600+
        String B22170001 = behaviorReportDetail.getString("B22170001");
        if (Integer.valueOf(B22170001) < 500){
            riskJudgeResult.setResult(StrUtil.format("贷款行为分 500+以上不通过；【{}】", B22170001));
            return riskJudgeResult;
        }

        // 近3 个月履约贷款次数
        String B22170046 = behaviorReportDetail.getString("B22170046");//  履约
        String B22170036 = behaviorReportDetail.getString("B22170036");// 失败
        if (Integer.valueOf(B22170046) < 0 || Integer.valueOf(B22170046) < Integer.valueOf(B22170036)){
            riskJudgeResult.setResult(StrUtil.format("近3个月履约贷款小于失败次数；【{}】【{}】", B22170046, B22170036));
            return riskJudgeResult;
        }

        // B22170045 近1 个月履约贷 款次数
        String B22170045 = behaviorReportDetail.getString("B22170045");
        if (Integer.valueOf(B22170045) < 2){
            riskJudgeResult.setResult(StrUtil.format("近1 个月履约贷 款次数2笔以上不通过；【{}】", B22170045));
            return riskJudgeResult;
        }

        /**
         * 近6 个月 MI+逾期贷款笔数
         */
        String B22170028 = behaviorReportDetail.getString("B22170028");
        if (Integer.valueOf(B22170028) > 0){
            riskJudgeResult.setResult(StrUtil.format("近6 个月 MI+逾期贷款笔数小于1不通过；【{}】", B22170028));
            return riskJudgeResult;
        }

        // 订单比例90以上
        // 正常还款订单数占贷款总订单数比例
        String B22170034 = behaviorReportDetail.getString("B22170034");
        B22170034 = B22170034.replace("%", "");
        if (Integer.valueOf(B22170034) < 90){
            riskJudgeResult.setResult(StrUtil.format("订单比例90以上不通过；【{}】", B22170034));
            return riskJudgeResult;
        }

        riskJudgeResult.setPass(true);
        riskJudgeResult.setResult("全景分控通过");
        return riskJudgeResult;
    }
}
